home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ein / sources / memsrc.lzh / MEM / MAIN.C < prev    next >
C/C++ Source or Header  |  1994-09-05  |  10KB  |  365 lines

  1. /*<Header>==============================================================
  2. *
  3. *    âüâéâèÄcù╩ò\Ī / "MAIN.C"
  4. *
  5. *        [ EIN(tm) project : âTâôâvâïâvâìâOâëâÇ ]
  6. *
  7. *    COPYRIGHT  Nam  1994, All rights reserved.
  8. *
  9. *    özòtüEægì₧üEëⁿò╧üEÅñùÿùpé╖é╫é─Ä⌐ùRüBé╜é╛é╡û│ò█Å╪é┴é╖
  10. *
  11. *-----------------------------------------------------------------------
  12. *    V1.0L01â┐    94.04.15/Nam    âvâìâgâ^âCâv
  13. *    V1.0L30        94.07.19/Nam    EIN(TM)î÷èJö┼
  14. *    V1.0L31        94.09.05/Nam    GM_QUITÄ₧é╔Ä⌐ò¬é┼WINDOWé≡Å┴ïÄ
  15. *</Header>==============================================================*/
  16. #include    <stdio.h>
  17. #include    <stdlib.h>
  18. #include    <string.h>
  19. #include    <snd.h>
  20. #include    <winb.h>
  21. #include    <te.h>
  22. #include    <fntb.h>
  23. #include    <gui.h>
  24. #include    <egb.h>
  25. //#include    <file_dlg.h>
  26. //#include    <tifflib.h>
  27. #include    <msdos.cf>
  28. #include    <loader.h>
  29. #include    <math.h>
  30. #include    <io.h>
  31. #include    <guidbg.h>
  32. #include    <wgb.h>
  33. // üª é▒é▒é▄é┼é¬ò╜ï╧ôIé╔Ägùpé│éΩéΘâwâbâ_
  34.  
  35. #include    "..\ein\eintm.h"    // EIN(TM)è╓ÿAâëâCâuâëâèé╠âwâbâ_
  36.  
  37. #define    ERROR    (-1)
  38.  
  39. int        ID_ICON[10];
  40. int        ID_PANEL[20];
  41. int        dispMode = 0;    // 0:icon / 1:win
  42.  
  43. /*= âèâWâàü[âÇùpÉ▌ÆΦ=================================================*/
  44. FRAME    RSM_ICONFR;
  45. FRAME    RSM_PANELFR;
  46. char    RSMID[]="%%% MemoryEmptyManager icon %%%";
  47. char    RSMTITLE[]="âüâéâèâ}âlü[âWââ V0.1 L31";
  48. /*===================================================================*/
  49.  
  50. void    ( *GV_defIdleTask )() ;
  51.  
  52. MMICTRL    mmic = {
  53.                  SCREEN16 | SCREENIGNORE,        //    resolution
  54.                  SCREENUNUSED,
  55.                  0, SCREENAVAILABLE, 0,    //    write_page,display_page,priority
  56.                  SCREENAVAILABLE,    //    mode
  57.                  SCREENEXPAND,        //    vram_x
  58.                  0,0,0,0,            //    size,*ptr,asize,*atpr
  59.                  0,0,0,0,            //    frame
  60.                  -32767,            //    move
  61.                  -32767,
  62.                   32767,
  63.                   32767,
  64.                  15,8,7,15            //    color
  65.                 } ;
  66.  
  67. /*===================================================================*/
  68. /*  âüâCâôâïü[âv                                                     */
  69. /*===================================================================*/
  70. void main()
  71. {
  72.     extern int APL_init() ;
  73.  
  74.     int        kobj;
  75.  
  76.     //    Åëè·ë╗Åêù¥
  77.     if (MMI_Open( &mmic ) == NOERR){
  78.         // ô±ÅdïNô«é╠check
  79.         if ( (kobj = MMI_CallMessage( MMI_GetApliId(), GM_QUERYID, QM_KIND, 1)) > NOERR ){
  80.             MMI_CallMessage( MMI_GetApliId(), GM_SWITCH, FALSE, kobj );
  81.         } else {
  82.             //    âAâCâhâïâ^âXâNé╔ôoÿ^
  83.             setIdleTask() ;
  84.             //    Åëè·ë╗é╔ɼî≈é╖éΩé╬âüâCâôâïü[âvé╔ôⁿéΘ.
  85.             if ( APL_init()==NOERR )
  86.                 MMI_ExecSystem() ;
  87.             //    âAâCâhâïé╠ë≡Å£
  88.             resetIdleTask() ;
  89.             // âEâBâôâhâDÅ┴ïÄ(üªSHELLé╔Å┴ïÄé│é╣éΘé╞Æxéóé╠é┼)
  90.             eraseWin();
  91.         }
  92.     }
  93.     //    ÅIù╣Åêù¥
  94.     MMI_Close() ;
  95. }
  96.  
  97. /*===================================================================*/
  98. /*  Åëè·ë╗Åêù¥                                                       */
  99. /*===================================================================*/
  100. int APL_init()
  101. {
  102.     extern    int        userFunc();
  103.     extern    MMIINIT    initDataRES_ICON ;
  104.     extern    MMIINIT    initDataRES_PANL ;
  105.  
  106.     extern    int ICONmaxId;
  107.     extern    unsigned char *ICONTbl[];
  108.  
  109.     extern int    memLimit;    // âAâjâüü[âVâçâôé≡èJÄné╖éΘÄcâüâéâè(byte)
  110.  
  111.     HYPER    hyp;
  112.     register int    ret ;
  113.  
  114.     // î╗ì▌é╠ÄcéΦâüâéâèù╩ĵô╛
  115.     memLimit = EIN_checkMem();
  116.  
  117.     if ((ret = MMI_initHyper()) < 0)            //    ânâCâpü[î^
  118.         return ret;
  119.     if ((ret = MMI_initDialogL40()) < 0)        //    â_âCâAâìâOî^
  120.         return ret;
  121. //    if ((ret = MMI_initAlertL40()) < 0)            //    âAâëü[âgî^
  122. //        return ret;
  123.     if ((ret = MMI_initMessageL40()) < 0)        //    âüâbâZü[âWî^
  124.         return ret;
  125. //    if ((ret = MMI_initMenuL40()) < 0)            //    âüâjâàü[î^
  126. //        return ret;
  127.     if ((ret = MMI_initButtonL40()) < 0)        //    â{â^âôî^
  128.         return ret;
  129.     if ((ret = MMI_initDrawButtonL40()) < 0)    //    âhâìâEâ{â^âôî^
  130.         return ret;
  131. //    if ((ret = MMI_initToggleIconL40()) < 0)    //    âgâOâïâ{â^âôî^
  132. //        return ret;
  133.     if ((ret = MMI_initIconL40()) < 0)            //    âAâCâRâôî^
  134.         return ret;
  135.     if ((ret = MMI_initNumBoxL40()) < 0)        //    ÉöÆlôⁿù═boxî^
  136.         return ret;
  137. //    if ((ret = MMI_initScrollBarL40()) < 0)        //    âXâNâìü[âïâoü[î^
  138. //        return ret;
  139. //    if ((ret = MMI_initTextL40()) < 0)            //    âeâLâXâgî^
  140. //        return ret;
  141. //    if ((ret = MMI_initMenuItemL40()) < 0)        //    âüâjâàü[âAâCâeâÇî^
  142. //        return ret;
  143.     if ((ret = MMI_initWindowL40()) < 0)        //    âEâBâôâhâEî^
  144.         return ret;
  145.  
  146.     //    âfü[â^é╠ôoÿ^
  147.     if ((ret = MMI_Init(&initDataRES_ICON)) < 0)
  148.         return ret ;
  149.     if ((ret = MMI_Init(&initDataRES_PANL)) < 0)
  150.         return ret ;
  151.  
  152.     /*----------------------------------*/
  153.     /*    âAâCâRâôôoÿ^                    */
  154.     /*----------------------------------*/
  155.     MMI_SetIconTable( ICONTbl, ICONmaxId ) ;
  156.  
  157.     // 256,32ké╠Ä₧é╠GUIÉFé≡É▌ÆΦ
  158.     EIN_initGuiColor();
  159.  
  160.     //    âEâBâôâhâEù▐é≡ATTACHé╖éΘ
  161.     MMI_SendMessage( ID_ICON[0], MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  162.  
  163.     //    âXâCâbâ`ââü[æ╬ë₧è╓Éöé╠ôoÿ^
  164.     MMI_SendMessage( MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc ) ;
  165.  
  166.     //    â^âCâgâïé╠ôoÿ^
  167.     MMI_CallMessage( MMI_GetApliId(), GM_TITLE, (int)RSMTITLE, 0 );
  168.  
  169.     /*----------------------------------*/
  170.     /*    âèâWâàü[âÇô╟é▌ì₧é▌ (üªé╠é┬éóé╜Åêù¥é═òKé╕ìsé┴é─é¡é╛é│éó)    */
  171.     /*----------------------------------*/
  172.     char    work[RSMWORKSIZE];    // âèâWâàü[âÇâ}âlü[âWââé╠âÅü[âNâGâèâA
  173.     char    buf[1024];
  174.     char    *ptr;
  175.     int        size, x, y;
  176.  
  177.     // üªâèâWâàü[âÇâ}âlü[âWââé╠Åëè·ë╗(âAâvâèé╠IDâ^âOôoÿ^)
  178.     EIN_rsmInit( work, RSMID );
  179.     // üªô╟é▌ì₧é▌âoâbâtâ@É▌ÆΦ
  180.     EIN_rsmBufSet( work, buf, 1023 );
  181.     // üªâèâWâàü[âÇÅεò±ô╟é▌ì₧é▌
  182.     size = EIN_rsmLoad( work );
  183.     #ifdef DEBUG
  184.     printf(" resume size(%d)\n",size);
  185.     #endif
  186.     if ( size > 0 ){
  187.         // ICONò\Īê╩Æu
  188.         if ( ((ptr = strstr(buf,"\nICON: ")) != NULL ) &&
  189.              (sscanf(ptr,"\nICON: %d %d\n", &x, &y) > 1 ) ){
  190.             MMI_SendMessage( ID_ICON[0], MM_GETHYPER, 1, &hyp );
  191.             RSM_ICONFR.lupx = x;
  192.             RSM_ICONFR.lupy = y;
  193.             RSM_ICONFR.rdwx = x+(hyp.fr.rdwx-hyp.fr.lupx);
  194.             RSM_ICONFR.rdwy = y+(hyp.fr.rdwy-hyp.fr.lupy);
  195.             #ifdef DEBUG
  196.             printf("ICON: move to (%d,%d)\n", x, y);
  197.             #endif
  198.             // é¿éóé╚éΦé│é±ï╓Ä~
  199.             if ( x<-31 ){
  200.                 x=0;
  201.             }
  202.             if ( y<-31 ){
  203.                 y=0;
  204.             }
  205.             MMI_SendMessage( ID_ICON[0], MM_MOVE, 1, &RSM_ICONFR ) ;
  206.         }
  207.     } else {
  208.         #ifdef DEBUG
  209.         printf("Can't find resume file.\n");
  210.         #endif
  211.     }
  212.     /*----------------------------------*/
  213.     /*    âèâWâàü[âÇô╟é▌ì₧é▌ÅIù╣            */
  214.     /*----------------------------------*/
  215.  
  216.     //    öwîié≡ò\Īé╖éΘ
  217.     MMI_SendMessage( MMI_GetBaseObj(), MM_SHOW, 0 ) ;
  218.  
  219.     // âoâbâNâOâëâEâôâhé╔é╖éΘ(üªé▒é╠âTâôâvâïé╠é▌)
  220.     MMI_CallMessage( MMI_GetApliId(), GM_SLEEP, 0 ,0 ) ;
  221.  
  222.     return NOERR ;
  223. }
  224.  
  225. /*===================================================================*/
  226. /* âèâWâàü[âÇÅεò±ìXÉV (üªé¬é┬éóé╜Åêù¥é═òKé╕ìsé┴é─ë║é│éó)             */
  227. /*===================================================================*/
  228. void    SaveResumeFile()
  229. {
  230.     extern int    func_Angel();
  231.     extern int    memLimit;    // âAâjâüü[âVâçâôé≡èJÄné╖éΘÄcâüâéâè(byte)
  232.     
  233.     char    work[RSMWORKSIZE];
  234.     char    buf[1024];
  235.     char    aplpath[128];
  236.     HYPER    hyp;
  237.     
  238.     int        ret;
  239.     
  240.     // ICONâpâ^ü[âôé≡"Å╕ôV"é╔
  241.     func_Angel();
  242.  
  243.     // ÿgì└òWé≡ô╛éΘ
  244.     MMI_SendMessage( ID_ICON[0], MM_GETHYPER, 1, &hyp );
  245.     
  246.     // ê┌ô«é╡é─éóé╜éτâZü[âu
  247.     if ( (RSM_ICONFR.lupx != hyp.fr.lupx) ||
  248.          (RSM_ICONFR.lupy != hyp.fr.lupy) ){
  249.         // üªâ}âlü[âWââÅëè·ë╗
  250.         EIN_rsmInit( work, RSMID );
  251.         // üªâoâbâtâ@É▌ÆΦ(âAâvâèÄ»ò╩ID,ìXÉVÄ₧ìÅé═Ä⌐ô«É▌ÆΦé│éΩé▄é╖)
  252.         EIN_rsmBufSet( work, buf, 1023 );
  253.         // üªâAâvâèâfâBâîâNâgâèò█æ╢
  254.         MMI_CallMessage( MMI_GetApliId(), GM_QUERYID, QM_PATH, (int)aplpath );
  255.         EIN_rsmBufPrintf( work, "APLPATH: %s", aplpath );
  256.         // üªâAâvâèû╝ò█æ╢
  257.         EIN_rsmBufPrintf( work, "TITLE:   %s", RSMTITLE );
  258.         // üªâRâüâôâgò█æ╢
  259.         EIN_rsmBufCat( work, "COMMENT: ÄcéΦâüâéâèù╩é╠ò\ĪüEæÇì∞é≡ìséªéΘâcü[âïé┼é╖" );
  260.         // âAâCâRâôê╩Æuò█æ╢
  261.         EIN_rsmBufPrintf( work, "ICON: %d %d", hyp.fr.lupx, hyp.fr.lupy );
  262. //        // ÄcéΦâüâéâèò\ĪèJÄnâTâCâYò█æ╢
  263. //        EIN_rsmBufPrintf( work, "MEMLIMIT: %d", memLimit );
  264.         // üªâoâbâtâ@ÅIÆ[(^A)É▌ÆΦ
  265.         EIN_rsmBufTail( work );
  266.         // üªâoâbâtâ@é≡âZü[âu
  267.         ret = EIN_rsmSave( work );
  268.         #ifdef DEBUG
  269.         printf(" resume save size(%d)   ptr:(%d,%d)\n",ret, hyp.fr.lupx, hyp.fr.lupy);
  270.         #endif
  271.         RSM_ICONFR.lupx = hyp.fr.lupx;
  272.         RSM_ICONFR.lupy = hyp.fr.lupy;
  273.         RSM_ICONFR.rdwx = hyp.fr.rdwx;
  274.         RSM_ICONFR.rdwy = hyp.fr.rdwy;
  275.     }
  276. }
  277.  
  278. /*===================================================================*/
  279. /*  âCâxâôâgâïü[âvè╓Éö